home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
et
/
tutorial
/
tutorial.lha
/
et++-tutorial
/
scripts
/
etman
< prev
Wrap
Text File
|
1992-01-24
|
7KB
|
191 lines
#!/usr/bin/ksh
#
# Script fuer Suche in ET++ Manuals
#
# SWS T24 fuer Abschlussarbeit 12 ET++ Tutorial
# Version: 1.1 18.12.91 H.Sch.
#
#
etmanpath=${ET_DIR}/man
etmanpath1=${etmanpath}/man1
#
#Suche in ET++ Manuals nach Begriff, Gross- Kleinschreibung nicht beachten
#Es wird zuerst in den Filenamen gesucht und falls dort nichts gefunden wird,
#wird die Suche im Manualinhalt fortgesetzt. Durch Eingabe der gewuenschten
#Filenamen-Zeilennummer wird 'man' gestartet.
#Aufruf: etman PATTERN [-d,s,e,f,x,r] (etman executable machen, nicht '. etman')
# PATTERN: Suchbegriff, Gross- Kleinschreibung wird ignoriert
# Options: d display Filenamen in denen Begriff vorkommt,
# suche in Filenamen und Manualinhalt
# s wie d, jedoch nur in Filenamen suchen (short)
# e exact ending, d.h. es wird nur am Filenamenende
# (nicht im Manualinhalt) gesucht
# und 'man' unmittelbar aufgerufen
# x exact match, wie -e, der Filename muss aber mit
# dem GesamtPattern uebereinstimmen
# f first match, unmittelbar 'man' aufrufen, es wird
# auch im Manualinhalt gesucht
# r recover from last search, d.h. Fileliste des letzten
# Suchvorganges verwenden. Aufruf: 'etman -r'
#
#Temp. Files--------
#
#===Bei Bedarf abaendern, jedoch kein global fuer mehrere User zugaengliches directory verwenden=====
#
fileliste1=~/et1.tmp
fileliste2=~/et2.tmp
fileliste3=~/et3.tmp
fileliste4=~/et4.tmp
zeilennr=~/et5.tmp
saveliste=~/et6.tmp
#
paranz=$#
#ordne Parameterreihenfolge-------------------
pattern=$1
opt=$2
if [ $# -ge 2 ] && [ ! "$(echo $2 | cut -c1)" = "-" ] && [ "$(echo $1 | cut -c1)" = "-" ] ;then
pattern=$2
opt=$1
fi
if [ $# -le 1 ] ;then
opt="-v"
fi
if [ $# -eq 1 ] && [ "$1" = "-r" ] ;then
opt="-r"
fi
if [ "$opt" = "-e" ] || [ "$opt" = "-f" ] || [ "$opt" = "-x" ] ;then
execute="y"
else
execute="n"
fi
if [ $paranz -lt 1 ] || [ $paranz -gt 2 ] ;then
echo "ET++ man und apropos etman PATTERN [-d] :-d display Files in denen PATTERN vorkommt"
echo " [-s] :-s display Files, short search"
echo " (PATTERN: ignore case) [-f] :-f first match execute"
echo " [-e] :-e exact ending match execute, ignore case"
echo " [-x] :-x exact match, ignore case"
echo " [ ] : execute durch Zeilennr. Angabe"
echo " etman -r :-r recover from last search"
else
#Suche Begriff in Manual-Filenamen--------------------
if [ ! "$opt" = "-r" ] ;then
echo "Suche Begriff in ET++ Manual-Filenamen"
rm $fileliste1 2> /dev/null 1> /dev/null
#suche passende Filenamen und schneide '.1' am Filenamenende ab
ls $etmanpath1 | grep -i $pattern | sed -e "s/\(.*\)\(\.1\)\$/\1/g" > $fileliste1
if [ -s $fileliste1 ] ;then
cp $fileliste1 $saveliste
if [ "$execute" = "n" ] ;then
pr -n2 -b -t $fileliste1 | more
else
pr -n2 -b -t $fileliste1
fi
fi
else
#recover mit altem Suchinhalt
cp $saveliste $fileliste1 2> /dev/null 1> /dev/null
if [ -s $fileliste1 ] ;then
echo "Ergebnis des letzten Suchvorganges"
pr -n2 -b -t $fileliste1 | more
else
echo "kein letzter Suchvorgang vorhanden"
opt="-s"
fi
fi
#Suche Begriff im Manual-Inhalt-------------------------
if [ ! -s $fileliste1 ] && [ ! "$opt" = "-s" ] && [ ! "$opt" = "-e" ] &&[ ! "$opt" = "-x" ] ;then
echo "Suche Begriff in ET++ Manuals"
rm $zeilennr 2> /dev/null 1> /dev/null
echo "" > $zeilennr
if [ "$opt" = "-v" ] ;then
echo -n "Suche im Manualinhalt fortsetzen ? RETURN fuer ja, sonst n >>"
line > $zeilennr
fi
if [ -z "$(cat $zeilennr)" ] ;then
rm $fileliste1
rm $fileliste2 2> /dev/null 1> /dev/null
rm $fileliste3 2> /dev/null 1> /dev/null
rm $fileliste4 2> /dev/null 1> /dev/null
< /dev/null
find $etmanpath1 "*" -exec grep -i -l $pattern {} \; > $fileliste4 2> /dev/null
#hole Filenamen aus Pfadnamen und schneide '.1' am Ende ab
sed -e "s/\(.*\/man1\/\)\(.*\)/\2/g" $fileliste4 | sed -e "s/\(.*\)\(\.1\)\$/\1/g" > $fileliste1
if [ -s $fileliste1 ] ;then
cp $fileliste1 $saveliste
if [ "$execute" = "n" ] ;then
pr -n2 -b -t $fileliste1 | more
else
pr -n2 -b -t $fileliste1
fi
fi
fi
fi
#Fuehre Zeile aus falls nicht nur Display---------------------
rm $fileliste4 2> /dev/null 1> /dev/null
if [ ! "$opt" = "-d" ] && [ ! "$opt" = "-s" ] && [ -s $fileliste1 ]
then
if [ "$execute" = "n" ] ;then
#Zeilennummer auswaehlen
echo -n "Nr der gewuenschten Zeile angeben >> "
rm $zeilennr 2> /dev/null 1> /dev/null
line > $zeilennr
sed -e "s/[a-z,A-Z]/0/g" $zeilennr > $fileliste4
cp $fileliste4 $zeilennr
rm $fileliste4
cat $fileliste1 | wc -l > $fileliste4
if [ -z "$(cat $zeilennr)" ] || [ $(cat $zeilennr) -gt $(cat $fileliste4) ] ;then
echo "0" > $zeilennr
fi
tail +$(cat $zeilennr)l $fileliste1 > $fileliste2
else
#execute machting line directly
cp $fileliste1 $fileliste2
echo "1" > $zeilennr
echo "1" > $fileliste4
fi
#Exact match des pattern oder match am Zeilenende-----------
if [ "$opt" = "-e" ] || [ "$opt" = "-x" ] ;then
if [ "$opt" = "-e" ] ;then
rm $fileliste1
grep -i $pattern\$ $fileliste2 | tee $fileliste1 | line > $fileliste3
if [ $(wc -l <$fileliste1) -gt 1 ] ;then
echo "WARNING: keine eindeutige Auswahl moeglich, keine Option statt -e angeben"
fi
if [ -z "$(cat $fileliste3)" ] ;then
echo "WARNING: keine Uebereinstimmung am Zeilenende, keine Option statt -e angeben"
fi
else
fgrep -ix $pattern $fileliste2 | line > $fileliste3
if [ -z "$(cat $fileliste3)" ] ;then
echo "WARNING: keine Gesamtuebereinstimmung des Suchbegriffes, keine Option statt -x angeben"
fi
fi
rm $zeilennr 1> /dev/null 2> /dev/null
rm $fileliste4 1> /dev/null 2> /dev/null
echo "1" > $zeilennr
echo "1" > $fileliste4
else
cat $fileliste2 | line > $fileliste3
fi
# man aufrufen -----------
if test $(cat $zeilennr) -gt 0 -a -s $fileliste3 -a ! -z "$(cat $fileliste3)" ;then
man -P $etmanpath $(cat $fileliste3) | less
fi
fi
# Bereinigungen --------------
rm $fileliste1 2> /dev/null 1> /dev/null
rm $fileliste2 2> /dev/null 1> /dev/null
rm $fileliste3 2> /dev/null 1> /dev/null
rm $fileliste4 2> /dev/null 1> /dev/null
rm $zeilennr 2> /dev/null 1> /dev/null
fi